interface ILength {
    length: number
}

function getLength(arg: ILength) {

    return arg.length
}

const length1 = getLength("aaaaa")
const length2 = getLength(["aaa", "bbb", "ccc"])
const length3 = getLength({ length: 100 })

// 2.获取传入的内容，这个内容必须有length属性
// Type相当于一个变量，用于记录本次调用的类型，所以在整个函数的执行周期中，一直保留着参数的类型
function getInfo<T extends ILength>(args: T): T {
    return args
}
const info1 = getInfo("aaaaa")
const info2 = getInfo(["aaa", "bbb", "ccc"])
const info3 = getInfo({ length: 100 })
